#pragma once
#include <vector>

class CTetModel
{
public:
	explicit CTetModel() = default;
	~CTetModel() = default;

	bool initializeMesh(const std::vector<unsigned int>& vParticleIndices);

	int getTetSize() const { return m_TetIndices.size(); }
	const std::vector<unsigned int>& getTet(unsigned int vIndex) { _ASSERTE(vIndex < m_TetIndices.size()); return m_TetIndices[vIndex]; }
	int getEdgeSize() const { return m_TetEdges.size(); }
	const std::pair<unsigned int, unsigned int>& getEdge(unsigned int vIndex) { _ASSERTE(vIndex < m_TetEdges.size()); return m_TetEdges[vIndex]; }

private:
	void __addTet(const std::vector<unsigned int>& vIndices);
	void __addEdge(const std::vector<unsigned int>& vIndices);

	std::vector<std::vector<unsigned int>> m_TetIndices;
	std::vector<std::pair<unsigned int, unsigned int>> m_TetEdges;
};